#ifndef GRILLE_MOT_CACHE_H
#define GRILLE_MOT_CACHE_H

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>

using namespace std;

typedef unsigned int uInt;
typedef pair<uInt,uInt> pos;

class GrilleMotCache
{
public:
	GrilleMotCache(ifstream &fichierGrille);
	~GrilleMotCache();
	bool motPresent(const string &mot);
	uInt nbrOccurences(const string &mot);
	void afficherMap() const;
	void afficherGrille() const;
	
private:
	GrilleMotCache();
	bool chercheMotPos(const string &mot, const pos &position) const;
	bool chercheDroite(const string &mot, const pos &position) const;
	bool chercheBas(const string &mot, const pos &position) const;

	char ** grille_;
	map<char, vector<pair<uInt,uInt>>> mapPosLettre_;
	uInt nbLignes_;
	uInt nbColones_;
};

#endif